home *** CD-ROM | disk | FTP | other *** search
-
-
-
- CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- CGI::Fast - CGI Interface for Fast CGI
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- use CGI::Fast qw(:standard);
- $COUNTER = 0;
- while (new CGI::Fast) {
- print header;
- print start_html("Fast CGI Rocks");
- print
- h1("Fast CGI Rocks"),
- "Invocation number ",b($COUNTER++),
- " PID ",b($$),".",
- hr;
- print end_html;
- }
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- CGI::Fast is a subclass of the CGI object created by CGI.pm.
- It is specialized to work well with the Open Market FastCGI
- standard, which greatly speeds up CGI scripts by turning
- them into persistently running server processes. Scripts
- that perform time-consuming initialization processes, such
- as loading large modules or opening persistent database
- connections, will see large performance improvements.
-
- OOOOTTTTHHHHEEEERRRR PPPPIIIIEEEECCCCEEEESSSS OOOOFFFF TTTTHHHHEEEE PPPPUUUUZZZZZZZZLLLLEEEE
- In order to use CGI::Fast you'll need a FastCGI-enabled Web
- server. Open Market's server is FastCGI-savvy. There are
- also freely redistributable FastCGI modules for NCSA httpd
- 1.5 and Apache. FastCGI-enabling modules for Microsoft
- Internet Information Server and Netscape Communications
- Server have been announced.
-
- In addition, you'll need a version of the Perl interpreter
- that has been linked with the FastCGI I/O library.
- Precompiled binaries are available for several platforms,
- including DEC Alpha, HP-UX and SPARC/Solaris, or you can
- rebuild Perl from source with patches provided in the
- FastCGI developer's kit. The FastCGI Perl interpreter can
- be used in place of your normal Perl without ill
- consequences.
-
- You can find FastCGI modules for Apache and NCSA httpd,
- precompiled Perl interpreters, and the FastCGI developer's
- kit all at URL:
-
- http://www.fastcgi.com/
-
-
- WWWWRRRRIIIITTTTIIIINNNNGGGG FFFFAAAASSSSTTTTCCCCGGGGIIII PPPPEEEERRRRLLLL SSSSCCCCRRRRIIIIPPPPTTTTSSSS
-
-
-
- PPPPaaaaggggeeee 1111 ((((pppprrrriiiinnnntttteeeedddd 11110000////22223333////99998888))))
-
-
-
-
-
-
- CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333))))
-
-
-
- FastCGI scripts are persistent: one or more copies of the
- script are started up when the server initializes, and stay
- around until the server exits or they die a natural death.
- After performing whatever one-time initialization it needs,
- the script enters a loop waiting for incoming connections,
- processing the request, and waiting some more.
-
- A typical FastCGI script will look like this:
-
- #!/usr/local/bin/perl # must be a FastCGI version of perl!
- use CGI::Fast;
- &do_some_initialization();
- while ($q = new CGI::Fast) {
- &process_request($q);
- }
-
- Each time there's a new request, CGI::Fast returns a CGI
- object to your loop. The rest of the time your script waits
- in the call to _n_e_w(). When the server requests that your
- script be terminated, _n_e_w() will return undef. You can of
- course exit earlier if you choose. A new version of the
- script will be respawned to take its place (this may be
- necessary in order to avoid Perl memory leaks in long-
- running scripts).
-
- CGI.pm's default CGI object mode also works. Just modify
- the loop this way:
-
- while (new CGI::Fast) {
- &process_request;
- }
-
- Calls to _h_e_a_d_e_r(), _s_t_a_r_t__f_o_r_m(), etc. will all operate on
- the current request.
-
- IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG FFFFAAAASSSSTTTTCCCCGGGGIIII SSSSCCCCRRRRIIIIPPPPTTTTSSSS
- See the FastCGI developer's kit documentation for full
- details. On the Apache server, the following line must be
- added to srm.conf:
-
- AddType application/x-httpd-fcgi .fcgi
-
- FastCGI scripts must end in the extension .fcgi. For each
- script you install, you must add something like the
- following to srm.conf:
-
- AppClass /usr/etc/httpd/fcgi-bin/file_upload.fcgi -processes 2
-
- This instructs Apache to launch two copies of
- file_upload.fcgi at startup time.
-
- UUUUSSSSIIIINNNNGGGG FFFFAAAASSSSTTTTCCCCGGGGIIII SSSSCCCCRRRRIIIIPPPPTTTTSSSS AAAASSSS CCCCGGGGIIII SSSSCCCCRRRRIIIIPPPPTTTTSSSS
-
-
-
- PPPPaaaaggggeeee 2222 ((((pppprrrriiiinnnntttteeeedddd 11110000////22223333////99998888))))
-
-
-
-
-
-
- CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333))))
-
-
-
- Any script that works correctly as a FastCGI script will
- also work correctly when installed as a vanilla CGI script.
- However it will not see any performance benefit.
-
- CCCCAAAAVVVVEEEEAAAATTTTSSSS
- I haven't tested this very much.
-
- AAAAUUUUTTTTHHHHOOOORRRR IIIINNNNFFFFOOOORRRRMMMMAAAATTTTIIIIOOOONNNN
- be used and modified freely, but I do request that this
- copyright notice remain attached to the file. You may
- modify this module as you wish, but if you redistribute a
- modified version, please attach a note listing the
- modifications you have made.
-
- Address bug reports and comments to:
- lstein@genome.wi.mit.edu
-
- BBBBUUUUGGGGSSSS
- This section intentionally left blank.
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- the _C_G_I::_C_a_r_p manpage, the _C_G_I manpage
-
- =cut
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 3 (printed 10/23/98)
-
-
-
-